// pages/profile/profile.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 用户信息
    userInfo: {
      avatar: '/images/default-avatar.png',
      nickname: 'ChartLite用户',
      email: 'user@example.com',
      level: 'Pro',
      joinDate: '2024-01-01'
    },
    
    // 用户统计
    userStats: {
      charts: 12,
      datasets: 8,
      shares: 24
    },
    
    // 菜单配置
    accountMenus: [
      {
        id: 'edit-profile',
        icon: '👤',
        title: '编辑资料',
        desc: '修改个人信息和头像',
        type: 'navigate'
      },
      {
        id: 'change-password',
        icon: '🔒',
        title: '修改密码',
        desc: '更改登录密码',
        type: 'navigate'
      },
      {
        id: 'privacy',
        icon: '🛡️',
        title: '隐私设置',
        desc: '管理数据隐私和权限',
        type: 'navigate'
      }
    ],
    
    appMenus: [
      {
        id: 'theme',
        icon: '🎨',
        title: '主题设置',
        desc: '切换应用主题',
        type: 'navigate'
      },
      {
        id: 'language',
        icon: '🌐',
        title: '语言设置',
        desc: '选择界面语言',
        type: 'navigate'
      },
      {
        id: 'notifications',
        icon: '🔔',
        title: '通知设置',
        desc: '管理推送通知',
        type: 'switch',
        enabled: true
      },
      {
        id: 'auto-save',
        icon: '💾',
        title: '自动保存',
        desc: '自动保存图表数据',
        type: 'switch',
        enabled: true
      }
    ],
    
    helpMenus: [
      {
        id: 'tutorial',
        icon: '📖',
        title: '使用教程',
        desc: '学习如何使用ChartLite',
        type: 'navigate'
      },
      {
        id: 'feedback',
        icon: '💬',
        title: '意见反馈',
        desc: '提交建议和问题',
        type: 'navigate'
      },
      {
        id: 'about',
        icon: 'ℹ️',
        title: '关于我们',
        desc: '了解ChartLite',
        type: 'navigate'
      }
    ],
    
    // 编辑资料弹窗
    showEditModal: false,
    editForm: {
      nickname: '',
      email: '',
      bio: ''
    },
    
    // 应用版本
    appVersion: '1.0.0'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    console.log('Profile page loaded');
  },

  /**
   * 返回上一页
   */
  goBack() {
    wx.navigateBack();
  },

  /**
   * 打开设置页面
   */
  openSettings() {
    wx.showToast({
      title: '设置功能开发中',
      icon: 'none'
    });
  },

  /**
   * 编辑头像
   */
  editAvatar() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        this.setData({
          'userInfo.avatar': tempFilePath
        });
        
        // 保存到本地存储
        const userInfo = { ...this.data.userInfo, avatar: tempFilePath };
        wx.setStorageSync('userInfo', userInfo);
        
        wx.showToast({
          title: '头像更新成功',
          icon: 'success'
        });
      }
    });
  },

  /**
   * 处理菜单点击
   */
  onMenuTap(e) {
    const { id, type } = e.currentTarget.dataset;
    
    if (type === 'switch') {
      this.toggleMenuSwitch(id);
    } else {
      this.navigateToMenu(id);
    }
  },

  /**
   * 切换开关状态
   */
  toggleMenuSwitch(menuId) {
    const menus = ['appMenus'];
    
    menus.forEach(menuType => {
      const menuList = this.data[menuType];
      const menuIndex = menuList.findIndex(item => item.id === menuId);
      
      if (menuIndex !== -1) {
        const updateKey = `${menuType}[${menuIndex}].enabled`;
        this.setData({
          [updateKey]: !menuList[menuIndex].enabled
        });
        
        // 保存设置到本地存储
        const settings = wx.getStorageSync('appSettings') || {};
        settings[menuId] = !menuList[menuIndex].enabled;
        wx.setStorageSync('appSettings', settings);
        
        wx.showToast({
          title: menuList[menuIndex].enabled ? '已关闭' : '已开启',
          icon: 'success'
        });
      }
    });
  },

  /**
   * 导航到菜单页面
   */
  navigateToMenu(menuId) {
    switch (menuId) {
      case 'edit-profile':
        this.showEditProfile();
        break;
      case 'password':
          this.showPasswordDialog();
          break;
        case 'privacy':
          this.showPrivacySettings();
          break;
        case 'theme':
          this.showThemeSettings();
          break;
        case 'language':
          this.showLanguageSettings();
          break;
        case 'tutorial':
          this.showTutorial();
          break;
      case 'feedback':
        this.showFeedback();
        break;
      case 'about':
        this.showAbout();
        break;
     default:
        console.log('Unknown menu:', menuId);
        break;}
  },

  /**
   * 显示编辑资料弹窗
   */
  showEditProfile() {
    this.setData({
      showEditModal: true,
      editForm: {
        nickname: this.data.userInfo.nickname,
        email: this.data.userInfo.email,
        bio: this.data.userInfo.bio || ''
      }
    });
  },

  /**
   * 关闭编辑资料弹窗
   */
  closeEditModal() {
    this.setData({ showEditModal: false });
  },

  /**
   * 处理表单输入
   */
  onFormInput(e) {
    const { field } = e.currentTarget.dataset;
    const { value } = e.detail;
    
    this.setData({
      [`editForm.${field}`]: value
    });
  },

  /**
   * 保存编辑资料
   */
  saveProfile() {
    const { editForm } = this.data;
    
    // 验证表单
    if (!editForm.nickname.trim()) {
      wx.showToast({ title: '请输入昵称', icon: 'none' });
      return;
    }
    
    if (!editForm.email.trim()) {
      wx.showToast({ title: '请输入邮箱', icon: 'none' });
      return;
    }
    
    // 验证邮箱格式
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(editForm.email)) {
      wx.showToast({ title: '邮箱格式不正确', icon: 'none' });
      return;
    }
    
    // 更新用户信息
    const userInfo = {
      ...this.data.userInfo,
      nickname: editForm.nickname,
      email: editForm.email,
      bio: editForm.bio
    };
    
    this.setData({ userInfo });
    wx.setStorageSync('userInfo', userInfo);
    
    this.closeEditModal();
    wx.showToast({
      title: '保存成功',
      icon: 'success'
    });
  },

  /**
   * 显示反馈页面
   */
  showFeedback() {
    wx.showModal({
      title: '意见反馈',
      content: '感谢您使用ChartLite！如有任何建议或问题，请通过邮箱联系我们：feedback@chartlite.com',
      showCancel: false,
      confirmText: '知道了'
    });
  },

  /**
   * 显示关于页面
   */
  showAbout() {
    wx.showModal({
      title: '关于ChartLite',
      content: `ChartLite v${this.data.appVersion}\n\n一款简洁高效的图表制作工具，让数据可视化变得简单。\n\n© 2024 ChartLite Team`,
      showCancel: false,
      confirmText: '知道了'
    });
  },

  /**
   * 退出登录
   */
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除本地存储的用户信息
          wx.removeStorageSync('userInfo');
          wx.removeStorageSync('userToken');
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success',
            complete: () => {
              // 跳转到登录页面或首页
              wx.reLaunch({
                url: '/pages/home/home'
              });
            }
          });
        }
      }
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 页面显示时刷新用户信息
    this.loadUserInfo();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    // 页面隐藏
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // 页面卸载
  },

  /**
   * 显示密码修改对话框
   */
  showPasswordDialog() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    });
  },

  /**
   * 显示隐私设置
   */
  showPrivacySettings() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    });
  },

  /**
   * 显示主题设置
   */
  showThemeSettings() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    });
  },

  /**
   * 显示语言设置
   */
  showLanguageSettings() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    });
  },

  /**
   * 显示使用教程
   */
  showTutorial() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadUserInfo();
    this.loadUserStats();
    
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 1000);
  }

});